package com.p595263720.o_amap.search.model;

import android.content.Context;

import com.amap.api.maps.model.LatLng;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.poisearch.PoiSearch;

public class UnifiedPoiSearchQuery {
    /// 查询字符串，多个关键字用“|”分割
    private String query;

    /// 待查询建筑物的标识
    private String building;

    /// 待查分类组合
    private String category;

    /// 待查城市（地区）的电话区号
    private String city;

    /// 设置查询的是第几页，从0开始
    private int pageNum;

    /// 设置的查询页面的结果数目
    private int pageSize;

    /// 是否严格按照设定城市搜索
    private boolean cityLimit;

    /// 是否按照父子关系展示POI
    private boolean requireSubPois;

    /// 是否按照距离排序
    private boolean distanceSort;

    /// 设置的经纬度
    private LatLng location;

    /// 搜索边界, 周边检索使用
    private UnifiedSearchBound searchBound;

    //关键字搜索
    public PoiSearch toPoiSearch(Context context) {
        PoiSearch.Query poiQueryRes = new PoiSearch.Query(query, category, city);
        poiQueryRes.setBuilding(building);
        poiQueryRes.setPageNum(pageNum);
        poiQueryRes.setPageSize(pageSize);
        poiQueryRes.setCityLimit(cityLimit);
        poiQueryRes.requireSubPois(requireSubPois);
        poiQueryRes.setDistanceSort(distanceSort);
        if (location != null) {
            poiQueryRes.setLocation(new LatLonPoint(location.latitude, location.longitude));

        }
        return new PoiSearch(context, poiQueryRes);
    }


    //周边搜索
    public PoiSearch toPoiSearchBound(Context context) {
        PoiSearch.Query poiQueryRes = new PoiSearch.Query(query, category, city);
        poiQueryRes.setBuilding(building);
        poiQueryRes.setPageNum(pageNum);
        poiQueryRes.setPageSize(pageSize);
        poiQueryRes.setCityLimit(cityLimit);
        poiQueryRes.setDistanceSort(distanceSort);
        if (location != null) {
            poiQueryRes.setLocation(UnifiedSearchBound.toLatLonPoint(location));

        }
        PoiSearch search = new PoiSearch(context, poiQueryRes);
        if(searchBound!=null){
            search.setBound(searchBound.toSearchBoundCenterRange());
        }
        return search;
    }
    
}


